HTTP (HyperText Transfer Protocol) to be generally used on internet is a communication protocol to be used for transmitting/receiving contents described in HTML (HyperText Markup Language) or XML (Extensible Markup Language) between a client (Web browser) and a server. The HTTP has a main object to transmit/receive data in a HyperText format and cannot easily exchange binary data such as an image or a voice. At present, it is possible to partially transmit/receive the binary data by utilizing the special technique such as AJAX or Silverlight.
Moreover, the HTTP is a so-called request-response type unidirectional communication protocol. More specifically, in the HTTP, a client transmits a request to a server and the server returns data to meet a request as a response thereof. When the response is transmitted, the server is basically returned into an initial state. In other words, the server does not save a state of the client and cannot transmit data to the client in an active action started from the server.
Recently, the technique referred to as SaaS (Software as a Service) spreads out over internet. The SaaS indicates software (mainly application software) capable of utilizing a required function as a service if necessary. In general, the Saas has a mechanism in which the client can give access to the server via the internet to utilize a necessary function, and it is possible to use a service required by a user on demand.
The SaaS is also operated basically in accordance with the HTTP. For this reason, although it is desired to transmit data to the client in an action started from the server depending on the contents of the service, this cannot be usually carried out. Moreover, the SaaS has a mechanism in which a call back to the client from the service of the server (application software) cannot be carried out in respect of a security. For this reason, it is also impossible to transmit a state of the server to the client through a router or a firewall.
On the other hand, a framework referred to as .NET Remoting provided by Microsoft Corporation has a function for carrying out a call back from a server to a client. By using the .NET Remoting, therefore, it is possible to perform a bidirectional communication through the HTTP and to also transmit/receive data depending on an action started from the server in addition to a transmission/receipt of data corresponding to an action started from the client. Furthermore, the .NET Remoting also has a data communication function in a binary format. Therefore, it is also possible to easily implement a data communication in the binary format in a combination of the HTTP and the .NET Remoting.
However, the .NET Remoting has a drawback that NAT (Network Address Translation) traversal of a router cannot be carried out when services demanded by users are to be individually offered as in the Saas. The NAT represents a technique for interconverting a local address which can be accepted by only LAN in a hub and a global address on internet in a one-to-one relationship. When giving access to a server on the internet from a terminal in the hub to utilize a service of the SaaS, it is necessary to carry out an address conversion (NAT traversal) through the NAT. However, there is a problem in that the NAT traversal cannot be carried out with the use of the .NET Remoting in an SaaS environment.
In other words, in the case in which access is given to a server 200 from a client 100 through internet 300 and the client 100 gives a request for utilizing a desirable service 201 to the server 200 as shown in FIG. 4, a conversion from a local address to a global address is carried out by an NAT function in a router 400 provided between the client 100 and the internet 300. Moreover, a conversion from the global address to the local address is carried out by the NAT function in a router 500 provided between the internet 300 and the server 200. When returning a result of the service 201 from the server 200 to the client 100, however, it is impossible to carry out a reverse conversion from the local address to the global address in the router 500. The reason is as follows.
In the case of the SaaS, the server 200 needs to offer the same service 201 in response to requests given from the clients 100. In order to enable connection waiting of the clients 100, therefore, application software of the service 201 generates a communication process 202 corresponding to the client 100 which is once connected. A new IP address is set to the communication process 202 to be generated at this time. In other words, by generating the communication process 202 for each client 100 giving access to the server 200 and causing the communication process 202 to take charge of a communication with each client 100, it is possible to offer the service 201 in response to the requests sent from the clients 100.
Consequently, a local address to be used by the communication process 202 is a different IP address from the local address in a connection through the client 100 (which is converted from the global address through the router 500). For this reason, even if a response is to be sent from the communication process 202 to the client 100, the local address of the communication process 202 cannot be converted to the global address on the internet 300 by the NAT function of the router 500. As a result, a response to the client 100 cannot be sent.
By using an exclusive protocol such as SOAP or ICA (Independent Computing Architecture) in place of the HTTP, it is not necessary to utilize the .NET Remoting. For this reason, the problem of the NAT traversal can be solved. However, the exclusive protocol has no versatility and cannot carry out a binary data communication. Furthermore, there is also a problem in that a processing speed is lower than that of the HTTP.
As another means for solving the NAT traversal, moreover, there is also proposed the technique for specifying an IP address to be converted by an NAT function of a router, and predicting a port number to be converted by the NAT function of the router and registering them in a relay server as exchange information for the NAT traversal (for example, see Patent Document 1)    Patent Document 1: Japanese Laid-Open Patent Publication No. 2005-151142
However, the technique described in the Patent Document 1 serves to carry out an identification in a combination of a port number with an IP address in order to communicate with a specific terminal. The port number is registered in a relay server, and the port number is also converted simultaneously with an address conversion through the NAT function and always fluctuates in a communication between terminals. For this reason, it is necessary to have many port numbers in order to communicate with a large number of clients as in SaaS. However, the port number is also used usually for other purpose, and the number of the port numbers which can be used for the NAT traversal is limited. As a result, there is a problem in that the number of clients capable of simultaneously offering a service is decreased.